#ifndef __LINK_LIST_H__
#define __LINK_LIST_H__

struct sNode{    /* 定义单链表结点类型 */
    char essid[128];
    int signal_level;
    struct sNode *next;
};

/* 1.初始化线性表，即置单链表的表头指针为空 */
void initList(struct sNode* *hl);

/* 2.清除线性表L中的所有元素，即释放单链表L中所有的结点，使之成为一个空表 */
void clearList(struct sNode* *hl);

/* 3.返回单链表的长度 */
int sizeList(struct sNode *hl);

/* 4.检查单链表是否为空，若为空则返回１，否则返回０ */
int emptyList(struct sNode *hl);

/* 5.返回单链表中第pos个结点中的元素，若pos超出范围，则停止程序运行 */
int getElem(struct sNode *hl, int pos, struct sNode *pTemp);

/* 6.遍历一个单链表 */
void traverseList(struct sNode *hl);

/* 7.从单链表中查找具有给定值x的第一个元素，若查找成功则返回该结点data域的存储地址，否则返回NULL */
int findList(struct sNode *hl, struct sNode *pTemp);

/* 8.把单链表中第pos个结点的值修改为x的值，若修改成功返回１，否则返回０ */
// int updatePosList(struct sNode *hl, int pos, int x);

/* 9.向单链表的表头插入一个元素 */
void insertFirstList(struct sNode* *hl, struct sNode *pTemp);

/* 10.向单链表的末尾添加一个元素 */
void insertLastList(struct sNode* *hl, struct sNode *pTemp);

/* 11.向单链表中第pos个结点位置插入元素为x的结点，若插入成功返回１，否则返回０ */
int insetPosList(struct sNode* *hl, int pos, struct sNode *pTemp);

/* 12.向有序单链表中插入元素x结点，使得插入后仍然有序 */
void insertOrderList(struct sNode* *hl, struct sNode *pTemp);

/* 13.从单链表中删除表头结点，并把该结点的值返回，若删除失败则停止程序运行 */
// int deleteFirstList(struct sNode* *hl);

/* 14.从单链表中删除表尾结点并返回它的值，若删除失败则停止程序运行 */
// int deleteLastList(struct sNode* *hl);

/* 15.从单链表中删除第pos个结点并返回它的值，若删除失败则停止程序运行 */
// int deletePosList(struct sNode* *hl, int pos);

/* 16.从单链表中删除值为x的第一个结点，若删除成功则返回1,否则返回0 */
int deleteValueList(struct sNode* *hl, char *ssid);

#endif /* __LINK_LIST_H__ */